package vista;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.WindowListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.table.TableModel;

public class InterfazGraficaVenta 
{
	private JButton btnAceptar,btnAgregar,btnRemover,btnCancelar,btnSalir,btnBuscarCliente;
    private JTextField txtPorcImpuesto,txtPorcDescuento,txtCliente;
    private JLabel lblNroFactura,lblFecha,lblTotal;
    private JTable tabla;
    private Ventana ventana;
    
    public InterfazGraficaVenta()
    {
    	 ImageIcon imgAceptar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "aceptar.png"));
		 ImageIcon imgAgregar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "agregar.png"));
		 ImageIcon imgRemover= new ImageIcon(getClass().getResource("imagenes" + File.separator + "remover.png"));
	     ImageIcon imgCancelar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "cancelar.png"));
	     ImageIcon imgSalir= new ImageIcon(getClass().getResource("imagenes" + File.separator + "salir.png"));
	     
	     FabricaAbstractaVentana fabricaVentanas= FabricaAbstractaVentana.getInstance();
		 ventana= fabricaVentanas.crearVentanaIndependiente();
			
		 ventana.asignarTitulo("Ventas");
		 
		 JLabel lblTitulo= new JLabel("VENTA");
	     JLabel lblFactura= new JLabel("Nro Factura: ");
	     JLabel lblCliente= new JLabel("Cliente: ");
	     JLabel lblFechaE= new JLabel("Fecha Emision: ");
	     JLabel lblPorcDescuento= new JLabel("Porc Descuento:");
	     JLabel lblPorcImpuesto= new JLabel("Porc Impuesto:");
	     JLabel lblProductos= new JLabel("PRODUCTOS A FACTURAR");
	     JLabel lblTotalPagar= new JLabel("Total BsF: ");
	     
	     lblNroFactura= new JLabel("1000");
	     lblFecha= new JLabel("00/00/0000");
	     lblTotal= new JLabel("0.0");
	     
	     
	     JToolBar barraHerramientas= new JToolBar(),barraEdicion= new JToolBar(JToolBar.VERTICAL);
	     
	      
	     btnBuscarCliente= new JButton("...");
	     btnAgregar= new JButton("AGREGAR",imgAgregar);
	     btnRemover= new JButton("ELIMINAR",imgRemover);
	     btnAceptar= new JButton("ACEPTAR",imgAceptar);
	     btnCancelar= new JButton("CANCELAR",imgCancelar);
	     btnSalir= new JButton("SALIR",imgSalir);
	        
	     btnBuscarCliente.setActionCommand("BuscarCliente");
	     
	     txtPorcImpuesto= new JTextField();
	     txtPorcDescuento= new JTextField();
	     txtCliente= new JTextField();
	      
	        
	     txtPorcImpuesto.setName("txtPorcImpuesto");
	     txtPorcDescuento.setName("txtPorcDescuento");
	     txtCliente.setName("txtCliente");
	        
	     txtCliente.setEnabled(false); 

	     barraHerramientas.setFloatable(false);
	     barraHerramientas.setOpaque(false);
	     barraHerramientas.setBorderPainted(false);
	        
	     barraEdicion.setFloatable(false);
	     barraEdicion.setOpaque(false);
	     barraEdicion.setBorderPainted(false);

	     btnAceptar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnAceptar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnAceptar.setOpaque(false);
	     btnAceptar.setBorderPainted(false); 

	     btnAgregar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnAgregar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnAgregar.setOpaque(false);
	     btnAgregar.setBorderPainted(false);

	     btnRemover.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnRemover.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnRemover.setOpaque(false);
	     btnRemover.setBorderPainted(false);

	     btnCancelar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnCancelar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnCancelar.setOpaque(false);
	     btnCancelar.setBorderPainted(false);

	     btnSalir.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnSalir.setOpaque(false);
	     btnSalir.setBorderPainted(false);
	   
	     barraEdicion.add(btnAgregar);
	     barraEdicion.addSeparator();
	     barraEdicion.add(btnRemover);
	    
	     barraHerramientas.add(btnAceptar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnCancelar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnSalir);
	        
	  	 tabla= new JTable();
         JScrollPane scroll = new JScrollPane(tabla,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
         

         lblTitulo.setFont(new Font(Font.SERIF,Font.BOLD,20));
         lblFactura.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblNroFactura.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblFechaE.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblFecha.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblCliente.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblPorcDescuento.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblPorcImpuesto.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblTotalPagar.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblTotal.setFont(new Font(Font.DIALOG,Font.BOLD,15));
         lblProductos.setFont(new Font(Font.DIALOG,Font.BOLD,15));
        
        
         ventana.agregarComponente(lblTitulo, 335, 5, 300, 30);
         ventana.agregarComponente(lblFactura, 40, 55, 100, 20);
	     ventana.agregarComponente(lblNroFactura, 135, 55, 100, 20); 
	     ventana.agregarComponente(lblFechaE, 510, 55, 130, 20);
	     ventana.agregarComponente(lblFecha,630, 55,130, 20);
	     ventana.agregarComponente(lblCliente, 40, 105, 130, 20); 
   	     ventana.agregarComponente(lblPorcDescuento, 280, 103, 130, 20); 
	     ventana.agregarComponente(lblPorcImpuesto, 510, 103,130,20);
	     ventana.agregarComponente(lblTotalPagar,40, 340, 130, 20);
	     ventana.agregarComponente(lblTotal, 130, 340, 130, 20);
	     ventana.agregarComponente(txtCliente, 105, 100, 135, 25);
	     ventana.agregarComponente(txtPorcDescuento, 410,98, 70, 25);
	     ventana.agregarComponente(txtPorcImpuesto, 630, 98, 70, 25); 
	     ventana.agregarComponente(btnBuscarCliente, 242, 103, 20, 20);
	     ventana.agregarComponente(lblProductos, 40, 150, 235, 20);
	     ventana.agregarComponente(scroll, 40, 185, 550, 140); 
	     ventana.agregarComponente(barraEdicion, 620, 160, 100, 200);
	     ventana.agregarComponente(barraHerramientas, 235, 380, 280, 90);
	     
	     ventana.asignarTamanio(750, 520);
    }
    
    public void visualizarVentana()
	{
		ventana.visualizar();
	}
	
	public void descargarMemoria()
	{
		ventana.descargarMemoria();
	}
	
	public void addListener(WindowListener escuchador)
	{
	   ventana.addListener(escuchador);
	}
	
	public void addListener(ActionListener escuchador)
	{
		btnBuscarCliente.addActionListener(escuchador);
		btnAceptar.addActionListener(escuchador);
		btnAgregar.addActionListener(escuchador);
	    btnRemover.addActionListener(escuchador);
	    btnCancelar.addActionListener(escuchador);
	    btnSalir.addActionListener(escuchador);
	   
	}

    
	public void addListener(KeyListener escuchador)
	{
		txtPorcDescuento.addKeyListener(escuchador);
		txtPorcImpuesto.addKeyListener(escuchador);
	}
	
	
	public long getNroFactura()
	{
		return Long.parseLong(lblNroFactura.getText());
		
	}
	
	public void setNroFactura(long nroFactura)
	{
		lblNroFactura.setText(String.valueOf(nroFactura));
	}
	
	public void setTotal(double total)
	{
		lblTotal.setText(String.valueOf(total));
	}
	
	public double getTotal()
	{
		return Double.parseDouble(lblTotal.getText());
	}
	
	public String getFecha()
	{
		return lblFecha.getText();
	}
	
	public void setFecha(String fecha)
	{
		lblFecha.setText(fecha);
	}
	
	public void asignarCliente(String cliente)
	{
		txtCliente.setText(cliente);
	}
	
	public String getCliente()
	{
		return txtCliente.getText();
	}
	
	public float getPorcDescuento()
	{
		return Float.parseFloat(txtPorcDescuento.getText());
	}
	
	public float getPorcImpuesto()
	{
		return Float.parseFloat(txtPorcImpuesto.getText());
	}
	
	public void setPorcDescuento(float porc)
	{
		txtPorcDescuento.setText(String.valueOf(porc));
	}
	
	public void setPorcImpuesto(float porc)
	{
		txtPorcImpuesto.setText(String.valueOf(porc));
	}
	
	 public void asignarDatosTabla(TableModel modeloTabla)
	 {
		 tabla.setModel(modeloTabla);
	 }
	 
	 public int getFilaSeleccionada()
     {
			return tabla.getSelectedRow();
	 }
	 
	 public VentanaIndependiente getVentana()
	 {
	    	return (VentanaIndependiente) ventana;
	 }
	
}
